Additive synthesis is a signal synthesis technique based on the Fourier Theorem. This theorem states any signal can be decomposed into a set of constituent sine waves, and that the sum of the constituents will reconstitute the original. Additive synthesis is classified as a receiver-based synthesis algorithm, but differs from receiver-based schemes, such as subtractive synthesis and sampling, in that it is represented in the spectral (frequency) domain rather than the time domain.
There are many benefits in the use of additive synthesis for sound production in computer music applications. These include expressive musical control over fine timbral distinctions, perceptually relevant parameterizations, sample rate independence of timber description, availability of many analysis techniques, high control bandwidth, and multiple dimensions for resource allocation/optimization.
The challenge of the additive synthesis technique is the computational intensity of the separately controllable sinusoidal partials. A single low frequency piano note can require hundreds of time-varying sinusoids for accurate reproduction. Musically effective use of additive synthesis in live performance can require the ability to control many hundreds or even thousands of sinusoidal partials in real-time.
This computational challenge is addressed by resolving two issues: which hardware architecture to use and which sinusoid generation algorithm to use on the selected architecture. Digital Signal Processors or vector processors are a good selection for the data type and associated computational demands. Unfortunately, such architectures do not always support full-range (i.e., floating-point) arithmetic; fixed point may be all that is provided. There is always a large demand for low-cost implementations. Therefore, it is desirable to be able to exploit a relatively inexpensive, moderate-precision arithmetic hardware architecture, such as a 16-bit processor.
A number of sinusoidal partial production techniques may be used on a selected hardware architecture. These techniques can be placed in three classes: those that implement recursive filters, those using table-lookup, or those that work in the transform-domain using techniques, such as the inverse fast fourier transform. The transform-domain approach is most advantageous for applications requiring many sinusoids and for which some error in phase and amplitude and some latency is acceptable. The lookup technique is the most widely used for applications requiring a few sinusoids at a very high data rate, such as radio frequency communications. Recursive oscillators have several advantages, including the inherent fine-grain exposure of data parallelism, the far more limited demand on the memory system compared to table look-ups, the lower induced latency than with a transform-domain approach, the latency flexibility, and/or the attainable phase accuracy.
The primary problem with digital recursive oscillators is managing long-term stability as rounding and truncation errors accumulate. Another problem with recursive oscillators is providing sufficient frequency coefficient resolution.
In view of the foregoing, it would be highly desirable to provide an improved technique for processing real-time partials on a general purpose hardware architecture. Ideally, the technique could be readily implemented on a moderate-precision arithmetic hardware architecture, such as a 16-bit processor. The technique should address the problem of error accumulation inherent in recursive methods. In addition, the technique should provide sufficient frequency coefficient resolution.